¿Cómo decidirías entre `unknown`, `any`, narrowing y runtime validation en una frontera externa?
¿Cómo decidirías entre `unknown`, `any`, narrowing y runtime validation en una frontera externa? en TypeScript: criterios sobre arquitectura y unknown, error...
Esta pregunta de TypeScript sobre "Cómo decidirías entre unknown, any, narrowing y runtime validation en una frontera externa" deja ver rápido si conviertes arquitectura en decisiones operativas o si te quedas en teoría.
En una entrevista fuerte gana peso la persona que habla de costes, señales de degradación, deuda aceptada y plan de validación para "Cómo decidirías entre unknown, any, narrowing y runtime validation en una frontera externa", no solo de API o sintaxis.
Qué evalúa el entrevistador
- Si distingues qué parte de "Cómo decidirías entre
unknown,any, narrowing y runtime validation en una frontera externa" pertenece a arquitectura y cuál debería resolverse en unknown. - Si conviertes la respuesta en criterios observables: límites claros, impacto en el mantenimiento y forma de detectar regresiones.
- Si separas decisiones reversibles de irreversibles y justificas la arquitectura por velocidad de cambio, no por preferencia personal.
Respuesta sólida
- Empieza por el borde del problema: dominios, módulos o responsabilidades que hoy cambian a ritmos distintos en TypeScript.
- Justifica dónde pondrías las fronteras, qué acoplamientos aceptarías al principio y qué señal te haría revisar la decisión.
- Cierra con un criterio de validación real: coste de cambio, tiempo de entrega, número de puntos tocados o incidencias evitadas.
Compromisos y errores comunes
- Abrir más capas de las necesarias suele esconder la lógica importante y hacer más lenta la entrega sin resolver el acoplamiento real.
- Una arquitectura que nadie del equipo puede explicar en una pizarra rara vez aguanta bien el paso del tiempo.
Ejemplo de código
No se trata de memorizar esta implementación, sino de enseñar cómo ordenar el flujo de arquitectura en TypeScript sin mezclar responsabilidades ni perder de vista unknown.
type LoadingState<T> =
| { status: "idle" }
| { status: "loading" }
| { status: "success"; data: T }
| { status: "error"; message: string };
function isSuccess<T>(state: LoadingState<T>): state is { status: "success"; data: T } {
return state.status === "success";
}
const state: LoadingState<number> = { status: "success", data: 42 };
if (isSuccess(state)) console.log(state.data);
En entrevista yo usaría un ejemplo de este tamaño para "Cómo decidirías entre unknown, any, narrowing y runtime validation en una frontera externa": suficiente para demostrar criterio y lo bastante pequeño como para discutir riesgos y variantes sin perderse.
Ejemplo o caso real
Yo lo bajaría a un escenario reconocible de TypeScript: una pieza donde "Cómo decidirías entre unknown, any, narrowing y runtime validation en una frontera externa" aparece de forma recurrente, ya ha dejado señales en revisión o en soporte y mezcla arquitectura con unknown. Si la decisión mejora claridad, observabilidad y velocidad de cambio en ese trozo, entonces merece escalarla; si no, la dejaría local y documentada.
Frase corta de entrevista
Prefiero una solución comprobable y reversible a una respuesta brillante que nadie sepa mantener dentro de seis meses.
Marcarla como leída actualiza tu progreso.